﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Security.Cryptography;
using System.Text;

public partial class user_add : BasePage
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            CMSModel.CMSEntities dal = DAL.DBManager.GetCmsEmtity();
            ddlRole.DataSource = dal.Role;
            ddlRole.DataBind();
        }
    }
    protected void btnSave_Click(object sender, EventArgs e)
    {
        CMSModel.CMSEntities dal = DAL.DBManager.GetCmsEmtity();
        CMSModel.User user = new CMSModel.User();
        user.LoginName = txtName.Text;
        user.RoleId = int.Parse(ddlRole.SelectedValue);
        EncryptClasses.DESEncrypt des = new EncryptClasses.DESEncrypt();
        user.pwd = getMd5Hash(txtPwd.Text);

        if (rbtnForbidden.Checked)
            user.IsEnable = false;
        else
            user.IsEnable = true;
        user.Role = dal.Role.First(x => x.RoleId == user.RoleId);
        try
        {
            dal.AddToUser(user);
            dal.SaveChanges();
            ClientScript.RegisterStartupScript(GetType(), "add", "alert('添加成功!'),document.location='Default.aspx'", true);
        }
        catch (Exception ex)
        {
            LogYuMin.LogWriter.GetWriter(LogYuMin.LogFile.error).Write(GetType(), "addUser", LogYuMin.LogStates.ERROR, ex);
            ClientScript.RegisterStartupScript(GetType(), "add", "alert('添加失败!')", true); ;
        }

    }
    /// <summary>
    /// 加密字符串
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    static string getMd5Hash(string input)
    {
        // Create a new instance of the MD5CryptoServiceProvider object.
        MD5 md5Hasher = MD5.Create();

        // Convert the input string to a byte array and compute the hash.
        byte[] data = md5Hasher.ComputeHash(Encoding.Default.GetBytes(input));

        // Create a new Stringbuilder to collect the bytes
        // and create a string.
        StringBuilder sBuilder = new StringBuilder();

        // Loop through each byte of the hashed data 
        // and format each one as a hexadecimal string.
        for (int i = 0; i < data.Length; i++)
        {
            sBuilder.Append(data[i].ToString("x2"));
        }

        // Return the hexadecimal string.
        return sBuilder.ToString();
    }
}